package com.chapter17.demo4;


/**
 *  前面说了，只要程序中还有一个线程在运行，整个程序就不会退出，
 *  但后台线程不一样，如果所有用户线程都执行完毕，即使还有后台线程在运行，那么程序也会退出。
 *  因此，我们不应该使用后台线程来完成重要的任务，如果使用后台线程，那么它应该为其他线程提供服务，或者是完成无关紧要的任务。
 *
 *  可以看到当主线程结束后，虽然后台线程t并没有执行完任务，但也随着中止，整个程序退出。t线程的run方法中的finally语句块中的代码根本没有运行
 */
public class DaemonThread {
    public static void main(String[] args) {
        Thread t = new Thread(new DaemonTask());
        //将t线程设置为守护线程（后台线程），setDaemon方法需要在启动线程之前调用。
        t.setDaemon(true);
        t.start();

        for (int i=0;i<5;i++){
            System.out.println(Thread.currentThread().getName()+":"+i);
            try {
                //让主线程在打印一次信息后睡眠200毫秒，执行t线程
                Thread.sleep(200);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        System.out.println("主线程执行结束");
    }
}
